java StringTokenizer NoSuchElementExecption错误
我得到了一个NoTouchElementException,现在调试它时,我注意到Car和Carmap被正确创建,并且值被正确存储,所以我不确定ST没有看到下一个令牌?或者当is发现不再有代币时它是否停止
感谢所有人的投入
Carmap = new HashMap<String,Car>();
//Change file path accordingly
File f = new File("C:\\XXX\\XXX\\XXX\\CarFaxDB.txt");
//Check to see if file exists, else create file
if (f.exists()){
String data[] = readFile(f);
for (int i =0; i<data.length; i++){
if (data[i] != null){
if (i>0){
String line = data[i];
StringTokenizer st = new StringTokenizer(line,",");
String VIN = st.nextToken();
String carMake = st.nextToken();
String carModel = st.nextToken();
int carYear = Integer.parseInt(st.nextToken());
data[i]= line;
Car car = new Car(VIN, carMake, carModel, carYear);
Carmap.put(car.getVIN(), car);
}
}
}
}
# 1 楼答案
出现错误是因为您试图期望一个
nextToken()
,但标记器没有更多的标记在执行^{之前,您应该检查是否有更多令牌。您可以使用
hasMoreTokens()
方法来完成此外,你应该检查你是否得到了一个非空的
line
,并开始打印它,看看它是否有你期望的所有标记以下是更正后的代码片段:
# 2 楼答案
在调用
StringTokenizer.nextToken()
之前,必须检查StringTokenizer是否有更多的令牌。你是这样做的:请看这个question的答案,它解释了更多